//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ObjetoCompuesto3D.h"
#include "Malla.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
ObjetoCompuesto3D::ObjetoCompuesto3D(){
   cuantasPartes=0;
   partes=new Lista<Objeto3D>();
}

ObjetoCompuesto3D::~ObjetoCompuesto3D(){
       delete partes;
       cuantasPartes=0;
}
void ObjetoCompuesto3D::anadeParte(Objeto3D* parte){
   cuantasPartes++;
   partes->anadirDerecha(parte);
}

void ObjetoCompuesto3D::dibuja(){
                partes->inicia();
                //recorremos las partes que componen el objeto aplicando su matriz de coordenadas y dibujando el objeto
                for(int i=0;i<cuantasPartes;i++){
                        glPushMatrix();
                                Objeto3D *objeto=partes->getActual()->getValor();
                                glColor3f(objeto->getColor()->getRojo(),objeto->getColor()->getVerde(),objeto->getColor()->getAzul());
                                glMatrixMode(GL_MODELVIEW);
                                glMultMatrixf(objeto->getMatriz()->getVector());
                                objeto->dibuja();
                                partes->avanza();
                        glPopMatrix();
                }
}


